一、什么是持续集成? #

二、.travis.yml #

Travis 要求项目的根目录下面,必须有一个.travis.yml文件。这是配置文件,指定了 Travis 的行为。该文件必须保存在 Github 仓库里面,一旦代码仓库有新的 CommitTravis就会去找这个文件,执行里面的命令

language: python
script: true

面是一个稍微复杂一点的.travis.yml

language: python
sudo: required
before_install: sudo pip install foo
script: py.test

三、运行流程 #

3.1 install 阶段 #

install字段用来指定安装脚本

install: ./install-dependencies.sh
install:
  - command1
  - command2
install: true
3.2、script 字段 #
script: bundle exec thor build
script:
  - command1
  - command2

注意,script与install不一样,如果command1失败,command2会继续执行。但是,整个构建阶段的状态是失败。如果command2只有在command1成功后才能执行,就要写成下面这样。

script: command1 && command2
3.3 实例:Node 项目 #
language: node_js
node_js:
  - "8"
3.4 部署 #

部署的脚本可以在script阶段执行,也可以使用 Travis 为几十种常见服务提供的快捷部署功能。比如,要部署到 Github Pages,可以写成下面这样

deploy:
  provider: pages
  skip_cleanup: true
  github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard
  on:
    branch: master
3.5 钩子方法 #

Travis 为上面这些阶段提供了7个钩子

完整的生命周期,从开始到结束是下面的流程

before_install:
  - sudo apt-get -qq update
  - sudo apt-get install -y libxml2-dev

上面代码表示before_install阶段要做两件事,第一件事是要更新依赖,第二件事是安装libxml2-dev。用到的几个参数的含义如下:-qq表示减少中间步骤的输出,-y表示如果需要用户输入,总是输入yes

3.6 运行状态 #

四、使用技巧 #

4.1 环境变量 #
env:
  - DB=postgres
  - SH=bash
  - PACKAGE_VERSION="1.0.*"

有些环境变量(比如用户名和密码)不能公开,这时可以通过 Travis 网站,写在每个仓库的设置页里面,Travis 会自动把它们加入环境变量。这样一来,脚本内部依然可以使用这些环境变量,但是只有管理员才能看到变量的值,具体操作文档

4.2 加密信息 #